Methods and systems for automatically testing and applying codes to electronic shopping carts

ABSTRACT

Disclosed are methods, systems, and non-transitory computer-readable medium for automatically testing and applying codes to electronic shopping carts. For instance, the method may include: monitoring a browsing session of a user on an e-commerce website; determining whether a trigger condition is present based on the monitoring; when the determining determines the trigger condition is present, automatically performing a code test process for a first set of codes to obtain a first test result, the first set of codes being one or more codes among a plurality of codes for the e-commerce website; and upon completion of the code test process for the first set of codes, displaying a first menu, the first menu including information corresponding to the first test result.

TECHNICAL FIELD

Various embodiments of the present disclosure relate generally tomethods and systems for testing and applying codes to electronicshopping carts and, more particularly, to methods and systems forautomatically testing and applying codes to electronic shopping carts.

BACKGROUND

Generally, customers (or a browser extension of a browser for thecustomers) apply coupon or promotional codes to test the codes one-commerce websites during a checkout process. However, applying thecodes to test the codes during the checkout process may cause delaysduring the checkout process. For instance, delays may be caused byrequiring the customer to be at an appropriate step in the checkoutprocess to test the codes, may require the customer to manually enterand remove codes one at a time in order to compare a potential value ofthe codes, and since the testing the codes may require a certain amountof time, the entire checkout process may be delayed by the certainamount of time. Therefore, there is a challenge in testing for codes andnot unduly generating delay in customers checkout processes.

Moreover, in the case of a browser extension performing the code testingfor the customer, the browser extension may display a notification totest codes for the customer. However, a substantial proportion ofcustomers that may be prompted via the notification to test codes whileshopping online may not engage with the notification, whether because ofinsufficient knowledge or inclination to engage—thereby preventing theopportunity to take advantage of the savings from the codes findable bythe browser extension. Therefore, there is a challenge in completingprocesses to find and convert codes into savings for customers usingbrowser extensions.

The present disclosure is directed to overcoming one or more of theseabove-referenced challenges. The background description provided hereinis for the purpose of generally presenting the context of thedisclosure. Unless otherwise indicated herein, the materials describedin this section are not prior art to the claims in this application andare not admitted to be prior art, or suggestions of the prior art, byinclusion in this section.

SUMMARY OF THE DISCLOSURE

According to certain aspects of the disclosure, systems and methods aredisclosed for automatic code testing.

For instance, a method for automatic code testing may include:monitoring a browsing session of a user on an e-commerce website;determining whether a trigger condition is present based on themonitoring; when the determining determines the trigger condition ispresent, automatically performing a code test process for a first set ofcodes to obtain a first test result, the first set of codes being one ormore codes among a plurality of codes for the e-commerce website; andupon completion of the code test process for the first set of codes,displaying a first menu, the first menu including informationcorresponding to the first test result.

A system for automatic code testing may include a memory storinginstructions; and a processor executing the instructions to perform aprocess. The process may include: monitoring a browsing session of auser on an e-commerce website; determining whether a trigger conditionis present based on the monitoring; when the determining determines thetrigger condition is present, automatically performing a code testprocess for a first set of codes to obtain a first test result, thefirst set of codes being one or more codes among a plurality of codesfor the e-commerce website; and upon completion of the code test processfor the first set of codes, displaying a first menu, the first menuincluding information corresponding to the first test result.

A method for automatic code testing may include: monitoring a browsingsession of a user on an e-commerce website; determining whether atrigger condition is present based on the monitoring; when thedetermining determines the trigger condition is present, automaticallyperforming a code test process for a first set of codes to obtain afirst test result, the first set of codes being one or more codes amonga plurality of codes for the e-commerce website; upon completion of thecode test process for the first set of codes, displaying a first menu,the first menu including information corresponding to the first testresult, the first menu including a continue testing indicator when thefirst set of codes does not include all of the plurality of codes, thecontinue testing indicator being selectable by a user input to test asecond set of codes, the second set of codes corresponding to aremainder of the plurality of codes not included in the first set ofcodes; in response to receiving the user input to test the second set ofcodes, performing the code test process for the second set of codes toobtain a second test result; and upon completion of the code testprocess for the second set of codes, displaying a second menu, thesecond menu including information corresponding to the second testresult.

Additional objects and advantages of the disclosed embodiments will beset forth in part in the description that follows, and in part will beapparent from the description, or may be learned by practice of thedisclosed embodiments.

It is to be understood that both the foregoing general description andthe following detailed description are exemplary and explanatory onlyand are not restrictive of the disclosed embodiments, as claimed.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which are incorporated in and constitute apart of this specification, illustrate various exemplary embodiments andtogether with the description, serve to explain the principles of thedisclosed embodiments.

FIG. 1 depicts an exemplary system for automatically testing andapplying codes, according to one or more embodiments.

FIG. 2 depicts a flowchart for automatically testing and applying codes,according to one or more embodiments.

FIG. 3 depicts a flowchart for automatically testing and applying codes,according to one or more embodiments.

FIGS. 4A-4H depict graphical user interfaces (GUIs) for automaticallytesting and applying codes, according to one or more embodiments.

FIGS. 5A-5D depict GUIs for automatically testing and applying codes,according to one or more embodiments.

FIG. 6 depicts an example system that may execute techniques presentedherein.

DETAILED DESCRIPTION OF EMBODIMENTS

Various embodiments of the present disclosure relate generally tomethods and systems for testing and applying codes to electronicshopping carts.

The terminology used below may be interpreted in its broadest reasonablemanner, even though it is being used in conjunction with a detaileddescription of certain specific examples of the present disclosure.Indeed, certain terms may even be emphasized below; however, anyterminology intended to be interpreted in any restricted manner will beovertly and specifically defined as such in this Detailed Descriptionsection. Both the foregoing general description and the followingdetailed description are exemplary and explanatory only and are notrestrictive of the features, as claimed.

In this disclosure, the term “based on” means “based at least in parton.” The singular forms “a,” “an,” and “the” include plural referentsunless the context dictates otherwise. The term “exemplary” is used inthe sense of “example” rather than “ideal.” The term “or” is meant to beinclusive and means either, any, several, or all of the listed items.The terms “comprises,” “comprising,” “includes,” “including,” or othervariations thereof, are intended to cover a non-exclusive inclusion suchthat a process, method, or product that comprises a list of elementsdoes not necessarily include only those elements, but may include otherelements not expressly listed or inherent to such a process, method,article, or apparatus. Relative terms, such as, “substantially” and“generally,” are used to indicate a possible variation of ±10% of astated or understood value.

In general, the present disclosure is directed to methods and systemsfor automatically testing codes in response to a trigger condition, asdiscussed in more detail herein. A system of the present disclosure maymonitor a user's browsing session and determine whether a triggercondition is present; and in response to the trigger condition beingpresent, automatically perform a code test process for a first set ofcodes for an e-commerce website. The trigger condition may be a web pagethat has a code input field such that a code test process may beexecuted in association with the code input field of the web page forthe user. The first set of codes may be one or more codes of a pluralityof codes for the e-commerce website. The first set of codes may includecodes that have a high potential (e.g., likelihood of success, averagesavings, recently used, etc.) of providing savings for a user. The firstset of codes may be selected so as to increase chances to find savingsand also ensure that a user browsing/checking out on the e-commercewebsite is not delayed unduly. For instance, the first set of codes maybe selected so that the code test process for the first set of codes maynot exceed a threshold period of time (e.g., on average). As an example,the system of the present disclosure may determine a number of codes totest in the first set of codes based on an average time to test a codefor an e-commerce website and a threshold period of time. The thresholdperiod of time may be set considering a user experience for ane-commerce website.

The system of the present disclosure may perform the code test processto determine a test result for the first set of codes. The system of thepresent disclosure may display a menu based on the test result. The menumay indicate (automatically, as the code test process is executedautomatically) potential savings and/or rewards available to the user.The menu may also indicate whether there are more codes to test for thee-commerce website (e.g., a second set of codes), and a user mayoptionally choose to perform the further code testing to see ifgreater/better savings and/or rewards are available. The system of thepresent disclosure may, in response to a user choosing to perform thefurther testing, execute a second code test process for the second setof codes. The second set of codes may be all remaining codes of theplurality of codes for the e-commerce website that are not included inthe first set of codes. Therefore, the system of the present disclosuremay effectively remove an engagement step in the savings conversionfunnel for users of the system of the present disclosure. The removal ofan engagement step in the savings conversion funnel for users of thesystem of the present disclosure may cause a marked increase in couponsavings for users of the system of the present disclosure. Further, thesystem of the present disclosure may avoid unduly delaying users whilethe users browse or check out.

FIG. 1 depicts an exemplary system 100 for automatically testing andapplying codes, according to one or more embodiments. The system 100 mayinclude one or more user device(s) 105, a network 110, one or moreserver(s) 115, and one or more e-commerce web servers, such as, forexample, e-commerce web servers 120A and 1208. The user device 105, theserver 115, and the plurality of e-commerce web servers 120A and 120Bmay be connected via the network 110, using one or more standardcommunication protocols. The network 110 may be one or a combination ofthe Internet, a local network, or other network. The user device 105 andthe server 115 may transmit and receive messages from each other acrossthe network 110.

The server 115 may include a display/UI 115A, a processor 115B, a memory115C, and/or a network interface 115D. The server 115 may be a computer,system of computers (e.g., rack server(s)), or a cloud service computersystem. The server 115 may execute, by the processor 115B, an operatingsystem (O/S) and at least one instance of a code management program(each stored in memory 115C). The code management program may provideinformation to and/or perform processing for one or more user devices,such as the user device 105, as discussed in more detail below. Thememory 115C may also store the code management program, e-commercewebsite information, and/or code information. The e-commerce websiteinformation may include information regarding e-commerce websites forwhich the user device 105 is to perform the automatic code testing, asdiscussed in detail below. The code information may include informationfor a plurality of codes (e.g., coupon or promotional codes) associatedwith one or more e-commerce websites hosted by one or more of thee-commerce web servers 120A and/or 120B. The display/UI 115A may be atouch screen or a display with other input systems (e.g., mouse,keyboard, etc.) for an operator of the server 115 to control thefunctions of the server 115 (e.g., update the code management program,the e-commerce website information, and/or the code information). Thenetwork interface 115D may be an TCP/IP network interface for, e.g.,Ethernet or wireless communications with the network 110.

The user device 105 may include a display/UI 105A, a processor 1058, amemory 105C, and/or a network interface 105D. The user device 105 may bea computer, a cell phone, a tablet, etc. The user device 105 mayexecute, by the processor 1058, an operating system (O/S) and at leastone application (each stored in memory 105C). The application may be abrowser program or a mobile application program (which may also be abrowser program in a mobile O/S). The application may generate one ormore graphic user interfaces (GUIs) based on instructions/informationstored in the memory 105C and/or instructions/information received fromthe server 115 and/or the plurality of e-commerce web servers 120Aand/or 120B. The GUIs may, for instance, be web pages executed based onHTML, CSS, and/or scripts, such as JavaScript, but one skilled in theart would recognize that this may be accomplished by other methods, suchas XML and Android programming languages or Objective-C/Swift. Thedisplay/UI 105A may be a touch screen or a display with other inputsystems (e.g., mouse, keyboard, etc.). The network interface 105D may bean TCP/IP network interface for, e.g., Ethernet or wirelesscommunications with the network 110. The processor 1056, while executingthe application, may receive user inputs from the display/UI 105A, andperform actions or functions in accordance with the application.

The application (e.g., a browser program) may be a software applicationthat may be used by a user to access and interact with websites hostedby one or more of the plurality of e-commerce web servers 120A and 120Bover network 110. In at least one embodiment, a user may view andinteract with the websites hosted by one or more of the plurality ofe-commerce web servers 120A and 1206 via the application, for example,by clicking on links or graphical user elements to view items and toplace items in an electronic shopping cart. In other embodiments, anysuitable app (software application) or other component may be used inplace of the application.

In at least one embodiment, the application may include a browserextension (or plug-in) which performs certain functions, in accordancewith the system and methods described herein. For example, as describedin more detail below, in at least one embodiment, the browser extensionmay record requests made during interactions between the application andone or more of the plurality of e-commerce web servers 120A and 120B(and/or between the application and the server 115) and/or record userinputs on graphical user elements of GUIs. Alternatively, suchoperations may be performed by another component that need not be a partof the application. In at least one embodiment, the browser extension oranother software application may run in the background regardless ofwhether the application is running (e.g., a background application). Thebackground application may thereby see and record any relevantinteractions with websites hosted by the e-commerce web servers 120A and120B, regardless of which software is being used to perform theinteractions.

In at least one embodiment, the browser extension may include ananalysis tool. The analysis tool may be used to interpret and filter therecorded interactions or user inputs on graphical user elementsassociated with web pages hosted by the e-commerce web servers 120A and120B. The analysis tool may run on another device, such as the server115, or any other client device communicatively coupled to the server115.

In at least one embodiment, the browser extension may also include arequest identification program. The request identification program mayreview recorded requests or user inputs on graphical user elementsassociated with web pages, and identify those that are necessary tocomplete process flows. The request identification program may run onanother device, such as the server 115 or any other client devicecommunicatively coupled to the server 115.

In at least one embodiment, the browser extension may also include anautomated site navigation program. The automated site navigation programmay automatically extract information from various websites (such asthose hosted by the e-commerce web servers 120A and 120B) without theneed for rendering on a display, such as the display/UI 105A. Theautomated site navigation program may also automatically transmitrequests to, receive responses from, and process the responses of thee-commerce web servers 120A and 120B, as discussed in more detail below.In at least one embodiment, the automated site navigation program mayoperate using information generated by the analysis tool and the requestidentification program, based on recorded interactions with web pageshosted by the e-commerce web servers 120A and 120B. In at least oneembodiment, the automated site navigation program may function on theuser device 105; alternatively, the automated site navigation programmay be implemented on a separate device, such as the server 115. In atleast one embodiment, the automated site navigation program operateswithout any need for human interaction.

The browser extension may also include a code testing and applyingprogram. The code testing and applying program may, while a user isnavigating an e-commerce website, test codes to determine whether anycodes are valid codes which may be used with respect to a givencomposition or content of a shopping cart, or, generally, on any webpage that includes a code input field. A shopping cart may be aserver/browser hosted software-based mechanism to select goods (tangibleor intangible) and/or services for eventual purchase/rental through ane-commerce website hosted by an e-commerce server. The shopping cart mayinclude checkout queues, baskets, wish lists, etc. The composition ofthe shopping cart may be based on a current shopping cart of the user,or it may be based on a likely future shopping cart of the user (e.g., auser has viewed a type of product, a specific product, etc., and islikely to add the product to the shopping cart). Specifically, thebrowser extension may perform a code testing process, in accordance withthe code testing and applying program, to determine valid codes for ane-commerce website.

In general, the browser extension may, to execute the code testing andapplying program, monitor a browsing session of a user on an e-commercewebsite; determine whether a trigger condition is present based on themonitoring; when the determining determines the trigger condition ispresent, automatically perform a code test process for a first set ofcodes to obtain a first test result, the first set of codes being one ormore codes among a plurality of codes for the e-commerce website; andupon completion of the code test process for the first set of codes,display a first menu, the first menu including information correspondingto the first test result.

In one aspect of the disclosure, the browser extension may determinewhether a user is viewing an e-commerce website hosted by one of theplurality of e-commerce web servers 120A and 120B. For instance, thebrowser extension may, before the determining whether the triggercondition is present: determine whether the currently viewed e-commercewebsite is one of a plurality e-commerce websites, the plurality ofe-commerce websites being approved to execute the code test process, asindicated by the e-commerce website information; when the determiningdetermines the e-commerce website is one of the plurality of e-commercewebsites, then determine whether the trigger condition is present; andwhen the determining determines the e-commerce website is not one of theplurality of e-commerce websites, only perform the code test processwhen the trigger condition is present and a user input authorizing thecode test process to proceed is received. For instance, the browserextension may determine the user navigated to a website included in thee-commerce website information by, e.g., monitoring network requestssent by the user device 105 and/or analyzing a uniform resource locator(URL) of a currently accessed web page (e.g., displayed or loaded in atab of a browser). The browser extension may determine the user isviewing the website by one or more of: determining the user has accesseda web page of a website included in the e-commerce website information;determining the user is viewing the accessed web page based on acurrently displayed GUI; and/or determining the user device 105 hastransmitted network requests and/or received user inputs on graphicaluser elements associated with the website. For instance, networkrequests and/or URLs may be searched for text strings that match one ormore e-commerce websites (included in the e-commerce websiteinformation) hosted by the one or more e-commerce web servers 120A and120B. As one example, the matching may be performed by regularexpression processing on each network request and/or URLtransmitted/accessed by the user device 105. The e-commerce websiteinformation may be obtained by the browser extension from the server115. The server 115 may update the e-commerce website informationperiodically or in response to changes in the information of e-commercewebsite information. The server 115 may transmit the updates to thee-commerce website information to the user device 105 for the browserextension.

Generally, the plurality of e-commerce websites that are approved toexecute the code test process may correspond to (1) e-commerce websitesthat have an average time to test a code below a code testing thresholdtime; (2) e-commerce websites that have a likelihood of a successfulcode above a threshold likelihood; and/or (3) e-commerce websites thathave an average time to find a code that provides savings below asavings find threshold time. The testing threshold time may be, e.g.,seven seconds, or some other time period, considering user experience.The threshold likelihood may be a set percent likelihood, such as onecode in one hundred may be a successful code. The savings find thresholdtime may be, e.g., fifteen seconds, or some other time period,considering user experience. For instance, the average time to test acode for an e-commerce website may be determined by a historicalanalysis of previous attempts to test codes on the e-commerce website,from a start time to test a code to an end time to test a code. Thelikelihood of a successful code for an e-commerce website may bedetermined by the historical analysis of previous attempts to test codesindicating a rate of successful codes and/or length of time since a lastsuccessful code. The average time to find a code that provides savingsfor an e-commerce website may be determined by the historical analysisof previous attempts to test codes on the e-commerce website indicatinga distribution of time to find a code that provides savings (or,generally, economic benefit). In one aspect of the disclosure, theserver 115 may perform the historical analysis for all e-commercewebsites that the code management program is able to operate inconjunction with, and determine the plurality of e-commerce websiteswith an average time to test a code below the code testing thresholdtime; a likelihood of a successful code above the threshold likelihood;and/or an average time to find a code that provides savings below thesavings find threshold time.

To monitor a browsing session of a user on an e-commerce website, thebrowser extension may monitor network requests and replies, URLs, webpages, and/or user interactions on web pages. For instance, to monitornetwork requests and replies sent/received by the user device 105, thebrowser extension may (1) read sent requests and read received repliesand/or (2) intercept and forward requests as a proxy between theapplication and the e-commerce server. To monitor URLs, the browserextension may extract a URL from network requests/replies and/or from aweb page document of a currently viewed web page. To monitor web pages,the browser extension may obtain a web page document for a currentlyviewed web page. To monitor user interactions on a web page, the browserextension may read incoming messages to the application; and determinewhether the incoming messages correspond to user inputs (e.g., mouseclicks, touch screen inputs, or text input, etc.) on one or more webpages elements of a currently viewed web page.

To determine whether the trigger condition is present based on themonitoring, the browser extension may obtain current web pageinformation of the browsing session; analyze the current web pageinformation to determine whether code input identifiers are present(e.g., where presence of code input identifiers is the triggercondition); and when the analyzing determines the code input identifiersare present, determine the trigger condition is present.

The current web page information may include a currently viewed web pageof the browsing session, a universal resource locator (URL) of thecurrently viewed web page, and/or network requests/replies associatedwith the currently viewed web page. The currently viewed web page may bea web page that is currently displayed to the user or about to bedisplayed to the user (e.g., has been received and is being rendered fordisplay to the user).

The code input identifiers may include one or more cascading stylesheets (CSS) elements, one or more hypertext markup language (HTML)elements, and/or one or more URL elements. The one or more CSS elementsmay be CSS selectors that indicate a code input field. For instance, theCSS selectors may be determined by the server 115 or by analysis of webpage documents. For instance, CSS selectors may be associated with textthat indicates codes (e.g., promotional codes, coupon codes, etc.)(either in names, attributes, ids, classes, etc. of an HTML element orwithin element content of an HTML element); CSS selectors may beassociated with text entry elements that are associated with the textthat indicates codes (e.g., input fields or forms); and CSS selectorsmay be associated with buttons that are associated with the text entryelements and/or the text that indicates codes. The CSS selectors may begeneral to all of the e-commerce websites that are approved to executethe code test process, or specific to individual or groups of e-commercewebsites that are approved to execute the code test process. The one ormore HTML elements may be one or combinations of HTML elementsassociated with the text that indicates codes. For instance, the HTMLelements may include: a text header (<h1>, <h2>, <h3>, <h4>, <h5>, <h6>tags); a paragraph (<p> tag); a horizontal ruler (<hr> tag); a link(<a>(anchor) tag); a list (<ul> (unordered list), <ol> (ordered list) and<li> (list element) tags); an image(<img> tag); a divider (<div> tag); atext span (<span> tag), or any other HTML element. For instance, an HTMLelement (e.g., a text header <h1> or paragraph <p>) may display“Shopping Cart” or “Promo Code?” on a web page. The one or more URLelements may be alphanumeric strings that indicate code entry fields arepresent on a corresponding web page or that codes have been applied,removed, or tested. For instance, the browser extension may use regularexpression processing on URLs to match the alphanumeric strings to allor portions of a text string of the URL. As an example, an alphanumericstring may be “cart” in “example.com/cart.” One of skill in the artwould understand that the above examples are merely illustrative and notlimiting. Moreover, the text that indicates code entry fields and thealphanumeric strings that indicates code entry fields may also includevariations, synonyms, misspellings, etc. of text that indicates codeentry fields and the alphanumeric strings that indicates code entryfields.

To analyze the current web page information to determine whether thecode input identifiers are present may include: parsing the currentlyviewed web page to determine whether one of the one or more CSS elementsand/or the one or more HTML elements are present; and parsing the URL ofthe currently viewed web page and/or the network requests to determinewhether one of the one or more URL elements are present.

To determine whether one of the one or more CSS elements and/or the oneor more HTML elements are present in the current web page information,the browser extension may obtain the web page document, parse the webpage document, extract CSS elements and HTML elements from the parsedweb page document; and determine whether any of the extracted CSSelements and/or the extracted HTML elements match one of the one or moreCSS elements and/or the one or more HTML elements. For instance, thebrowser extension may extract a CSS element and determine whether a textstring of the extracted CSS element matches a text string of the one ormore CSS elements or determine whether the CSS element is within a sameHTML element of text that indicates a code entry field. As an example,the web page document may include “<buttonclass=“promo-apply-button”>Apply Code</button>” and the browserextension may match the button HTML element to one the one or more CSSelements because: (1) the button HTML element has a class of“promo-apply-button” and one or the one or more CSS elements has a classof “promo-apply-button” and/or (2) the button HTML element has text inthe class (e.g., “promo”) or the element content (“Apply”, “Code”, or“Apply Code”) has text that indicates a code entry field (e.g., “promo,”“apply,” “code,” “apply code”).

To determine whether one of the one or more URL elements are present inthe URL of the currently viewed web page and/or the network requests,the browser extension may use regular expression processing on the URLas a whole (or after removing non-relevant elements, e.g., “http”) todetermine whether the one or more URL elements are present. As anexample, the URL of the web page may be “https://example.com/cart” andthe browser extension may search for “cart” using regular expressionprocessing on the URL to match the string “cart.”

In response to determining the one or more CSS elements and/or the oneor more HTML elements are present, the browser extension may determinethat a trigger condition is present. In response to determining the oneor more URL elements are present, the browser extension may determinethat a trigger condition is present.

Alternatively or additionally, the browser extension may determinewhether the trigger condition is present by executing a trigger machinelearning model, such as an analytical model, a neural network, areinforcement learning model, or, generally, a model that takes inputs(e.g., a feature set) and outputs a target (e.g., a score, a binary,etc.) based on a trained function. The function may be trained using atraining set of labeled data, and/or the function may be updatediteratively (e.g., as in a reinforcement learning model). The featureset may be based on the web page document of the currently viewed webpage and/or the URL of the currently viewed web page. The output mayindicate whether the web page includes code input fields, e.g., by ascore above a threshold score or if the binary returns web page includesa code input field.

If the trigger condition is not present, the browser extension maycontinue to monitor the browsing session of the user on the e-commercewebsite and determine whether the trigger condition is present based onfurther network requests, web pages viewed, etc., until the usernavigates away from the e-commerce website. If the trigger condition ispresent, the browser extension may proceed to automatically perform thecode test process for the first set of codes to obtain the first testresult.

As mentioned above, the first set of codes may be one or more codesamong a plurality of codes for the e-commerce website. The plurality ofcodes may be associated with the e-commerce website. For instance, thecode information may be obtained by the browser extension from theserver 115. The code information may include codes from a third party(e.g., a service that aggregates codes for e-commerce websites), codesscraped from the internet, codes that have been successfully used byusers of the browser extension and/or the server 115 (e.g., crowdsourced codes), and/or personal codes of the user. The server 115 maycollect the codes and provide the code information to the browserextension. For instance, the server 115 and/or the browser extension mayaccess a user's e-mail account, find e-mails from e-commerce websitesthat include personal codes (e.g., single-use codes, special codes,codes only usable by the user, etc.), extract the personal codes fromthe e-mails from e-commerce websites, and (by the browser extension) usethe personal codes in the code testing process.

To obtain the first set of codes, the browser extension may obtain theplurality of codes for the e-commerce website; and select the one ormore codes from the plurality of codes as the first set of codes.Alternatively, the server 115 may provide the code information with thefirst set of codes and second set of codes corresponding to a remainderof the plurality of codes not included in the first set of codes.

In either case, the plurality of codes are scored according to a scoringalgorithm (or ranked according to the scores, by a power rankingalgorithm). The scoring algorithm/power ranking algorithm may score theplurality of codes according to a scoring/ranking model. The server 115may score the plurality of codes using the scoring algorithm/powerranking algorithm, and include the scores in the code information inassociation with the plurality of codes. The scoring/ranking model mayscore the plurality of codes based on code data. The code data mayinclude one or a combination of: (1) likelihood of success for a codefor the e-commerce website; (2) a savings amount (or other economicbenefit) for a code; (3) a last time a code was successfully used orapplied; (4) popularity of a code across e-commerce websites (e.g.,common promotional codes used on e-commerce websites); (5) a number ofsources for a code; and/or (6) a number of uses of a code in the past byusers manually entering the code.

The likelihood of success for the code for the e-commerce website may bea success rate (e.g., one of three times applied the code wassuccessful), based on a historical analysis of applying the code on thee-commerce website. The savings amount (or other economic benefit) forthe code may be an average amount saved (e.g., a dollar amount) or anaverage percentage discount, based on the historical analysis ofapplying the code on the e-commerce website. The last time the code wassuccessfully used or applied may be a date and time, based on thehistorical analysis of applying the code on the e-commerce website. Thepopularity of the code across e-commerce websites may be determinedbased on statistical analysis of codes for all e-commerce websites. Thenumber of sources for the code may be determined by tracking a number ofentities that indicate the code for the e-commerce website. Forinstance, the number of entities may be counted based on a number ofthird parties that provide the code, a number of websites the code isscraped from, a number of user's emails that indicate the code, etc. Thenumber of uses of the code in the past by users manually entering thecode may be determined by tracking codes entered manually by users.

Alternatively, the scoring/ranking model may be a scoring/rankingmachine learning model, such as an analytical model, a neural network, areinforcement learning model, or, generally, a model that takes inputs(e.g., a feature set) and outputs a target (e.g., a score) based on atrained function. The function may be trained using a training set oflabeled data, and/or the function may be updated iteratively (e.g., asin a reinforcement learning model). The feature set may be based on thecode data. The output may indicate a score for the code, indicating apotential of the code (e.g., likely to be successful/savings/etc.).

To select the one or more codes from the plurality of codes as the firstset of codes, the browser extension (or the server 115) may select anumber of codes scored highest of the scored plurality of codes as theone or more codes. The number of codes may be set to a fixed number ormay be set to a variable based on average processing time to test codeson an e-commerce website. For instance, the fixed number may be a samenumber (e.g., two) for all users, or the fixed number may be differentfor different users (e.g., 90% of users have a fixed number of two, and10% have a fixed number of five). The variable may be determined (by thebrowser extension or the server 115) by dividing a total time by anaverage time to process a code on an e-commerce website. The server 115may provide the threshold time, the variable, and/or the average time toprocess the code in the code information for the e-commerce website. Thethreshold time may be set to a fixed time, periodically adjusted, ordynamically adjusted, considering user experience.

In another aspect of the disclosure, the browser extension (or theserver 115) may adjust the ranking of the codes (or the scores of thecodes) based on a classification of a code. The classification of thecode may indicate whether the code is applicable to particular brands,products, services, etc. The browser extension may parse the web pagedocument, extract HTML elements, and perform a natural language processto determine a product/brand/service(s) of the web page document, or thebrowser extension may determine a product/brand/service(s) from theshopping cart of the browsing session. The browser extension maytransmit the determined product/brand/service(s) to the server 115, andthe server 115 may determine adjustment(s) to the ranking/scores of theplurality of codes. For instance, the server 115 may receive thedetermined product/brand/service(s) and determine whether there is amatch to a classification of a code of the plurality of codes. If thereare any matches to the classifications of the codes, the server 115 maydetermine the adjustment(s) for the corresponding codes in theranking/scoring, such as moving a code up the ranking a predeterminednumber of ranks or adding (or scaling) a score of the code by apredetermined amount.

To perform the code test process for the first set of codes, the browserextension may automatically apply, sequentially or in parallel, codes ofthe first set of codes to the browsing session of the user; receive, foreach applied code of the applied codes, responses from the e-commercewebsite; analyze the responses to determine a result for each of theapplied codes; and compile the first test result based on the determinedresult for each of the applied codes.

To apply a code to the browsing session of the user, the browserextension may select an untested code and perform one of: (1)transmitting to the e-commerce website a request to apply the code to ashopping cart of the browsing session or transmitting a request to applythe code as if entered in a code input field; or (2) programmaticallyentering a text string corresponding to the code into a code input fieldand programmatically selecting an input button to cause the web page totransmit the request. To transmit the request, the browser extension maygenerate the request in accordance with information from the requestidentification program or the analysis tool and/or from the e-commercewebsite information. For instance, the request may be specificallyformatted in accordance with an API call of a cart API of the e-commercewebsite or may be a specifically formatted HTTP request. The browserextension may then transmit the generated request to the e-commerce webserver 120A or 120B associated with the e-commerce website. To selectthe untested code, the browser extension may randomly select an untestedcode from among untested codes of a set of codes; select an untestedcode with a highest score from among the untested codes; select anuntested code associated with an e-mail of the user, etc.

To analyze the responses to determine a result for each of the appliedcodes, the browser extension may parse marked up data and/or formatteddata of the response, in accordance with information from the requestidentification program or the analysis tool and/or from the e-commercewebsite information. For instance, the response may be specificallyformatted in accordance with an API response of the cart API, theresponse may be text in HTML/CSS format, or the response may be in adata structure, such as JSON. In any of these cases, the response may beparsed according to the information from the request identificationprogram or the analysis tool and/or from the e-commerce websiteinformation. The browser extension may then extract transaction datafrom the parsed marked up data and/or formatted data of the response,and determine transaction results based on the extracted transactiondata. To extract transaction data, the browser extension may find andextract phrases of text and/or elements of the parsed marked up dataand/or formatted data, based on predetermined structures of the markedup data and/or formatted data.

For instance, the information from the request identification program orthe analysis tool and/or from the e-commerce website information mayindicate that an HTML/CSS response may include a section in a body in atable format with an indicator confirming successful code application,previous cost, current cost, taxes (if any), shipping, warranties,availability, expected shipping/arrival date, etc. (transactiondetails). Likewise, an API response may include a formatted datastructure that indicates the same types of transaction details.

To determine the transaction results based on the extracted transactiondata, the browser extension may compare a prior state to a current stateof the shopping cart (e.g., before and after the code was applied to theshopping cart) or compare a prior state to a current state of the codeinput field of the web page. The browser extension may compare the priorstate to the current state by comparing the transaction details, anddetermining if there are any differences between the transactionsdetails. As an example, the prior state may have a higher cost than thecurrent state, if the code applies a discount coupon to the shoppingcart or to the item. In this manner, the browser extension may determinewhether the code effects any change to the state of the shopping cart orto the item. Generally, the code may be considered a valid code if thecode causes a change to the state of the shopping cart; however, thebrowser extension may also only consider codes that benefit the user inone or more ways as valid codes. Based on the comparison, the browserextension may generate the transaction results to indicate whether thecode is a valid code. Furthermore, when the transaction results indicatethat the code is the valid code, the browser extension may include inthe transaction results further information regarding discounts,shipping information, and/or other transaction details.

To compile the first test result based on the determined result for eachof the applied codes, the browser extension may associate thetransaction results and the transaction details with each of the codesthat were applied. For instance, the browser extension may determine afirst code is valid and causes a discount, a second code is invalid, andso on for each of the codes included in the first set of codes; andstore each code in association with the transaction results and thetransaction details.

Additionally or alternatively, the browser extension may transmit arequest to delete the code from the shopping cart or the code inputfield. For instance, this may make testing a next code easier (e.g.,faster) or may reduce a likelihood of accidently holding a reserved useof the code from interfering with the user's ability to use the codewhen checking out.

To display the first menu, the browser extension may obtain the compiledfirst test result, extract the transaction results and the transactiondetails for the codes that were applied from the first test result,generate the first menu based on the transaction results and thetransaction details for the codes that were applied, and display thefirst menu. Generally, the first menu may include: when the first testresult indicates one or more successful codes of the first set of codes,a success indicator, the success indicator displaying a summary ofsavings or reward points for the one or more successful codes; when thefirst test result indicates no successful codes of the first set ofcodes, a no-savings indicator; and when the first set of codes does notinclude all of the plurality of codes, a continue testing indicator totest the second set of codes.

For instance, the success indicator may be a text string summary of anamount of savings (e.g., a dollar amount or percentage) (or othereconomic benefit) that a successful code provides. The browser extensionmay select the successful code for the success indicator from among thevalid codes of the transaction results. For instance, the browserextension may perform a selection algorithm to select the successfulcode. The selection algorithm may select a valid code that is a personalvalid code associated with the user, a valid code that has a greatestsavings, a valid code with a fastest estimated shipping, etc., or acombination thereof of benefits for the user. The success indicator maybe (or may be associated with) a link or button selectable by a userinput to proceed to apply the selected code (or activate a reward, asdiscussed below with respect to FIGS. 4A-4D and 5A-5C) and, optionally,proceed in a checkout process. The browser extension may automaticallyapply the selected code to the shopping cart. Moreover, in the case thata code was already applied to a shopping cart (e.g., by a user) beforethe code test process started, the browser extension may (beforeexecuting the code test process): store the previously applied code anda difference in a prior state to a current state of the shopping cartfor the previously applied code (e.g., store a savings amount of thepreviously applied code); and remove the previously applied code. Thebrowser extension may (after the code test process): determine whetherthe difference in the prior state to the current state of the shoppingcart for the previously applied code offers a greater economic benefitthan any of the valid codes (e.g., greater savings, faster estimatedshipping, etc., or a combination thereof of benefits for the user); inresponse to determining the difference in the prior state to the currentstate of the shopping cart for the previously applied code offers thegreater economic benefit than any of the valid codes, applying thepreviously applied code instead of a valid code; and in response todetermining the difference in the prior state to the current state ofthe shopping cart for the previously applied code does not offer thegreater economic benefit than any of the valid codes, automaticallyapply the selected code to the shopping cart.

The continue testing indicator may be a text string indicating that morecodes are available for testing (e.g., the second set of codes) and/or anumber of the codes available for testing (e.g., a number of codes ofthe second set of codes). The continue testing indicator may be (or maybe associated with) a link or button selectable by a user input toproceed to test the second set of codes.

The no-savings indicator may be a text string indicating that no codesreturned savings (or economic benefit). The no-savings indicator may be(or may be associated with) a link or button selectable by a user inputto exit the first menu (called herein an “exit action”). The exit actionmay close all menus associated with the browser extension.

In another aspect of the disclosure, the browser extension, may, when acontinue testing indicator to test the second set of codes is displayedin the first menu, receive a user input to test the second set of codes.In response to receiving the user input to test the second set of codes,the browser extension may perform the code test process for the secondset of codes to obtain a second test result. Upon completion of the codetest process for the second set of codes, the browser extension maydisplay a second menu, the second menu including informationcorresponding to the second test result. The code test process for thesecond set of codes may be the same as or similar to the code testprocess for the first set of codes (except for the codes being tested).The second menu may be generated and displayed in a same or similarmanner as the first menu.

In another aspect of the disclosure, as optional additional features,while the code test process is executing (for either or both the firstset of codes or the second set of codes), the browser extension may (1)display no indication of a code testing process or (2) display aprogress menu before displaying a result menu. The progress menu mayinclude a code testing indicator (such as testing indicator 416Bdepicted in FIG. 4B) that indicates that code testing is currentlyproceeding, so that a user is aware the code testing is proceeding. Theprogress menu may also graphically or textually indicate a progressamount (such as progress bar 416C depicted in FIG. 4B) of the codetesting. For instance, the progress amount may be a percentage of anumber of codes tested of all of the codes to be tested (e.g., 1 of 5codes of the first set of codes have been tested would be 20% tested,and so on).

In another aspect of the disclosure, to perform the code test process,the browser extension may clone a user's shopping cart to form a clonedshopping cart in a shadow session using the present content. Forinstance, the browser extension may clone the user's shopping cart toform the cloned shopping cart in the shadow session using a presentcontent of the user's shopping cart. The browser extension may then testthe codes on the cloned shopping cart in the shadow session to determinethe valid codes. A shadow session may be a session distinct and separatefrom the session associated with the user, between the browser extensionand the e-commerce web server 120A or 120B that hosts the e-commercewebsite. The shadow session may be processed in a background of theapplication such that a user may not see associated web pages, graphics,or information. The browser extension may invoke the automated sitenavigation program to perform the process to test the codes on thecloned shopping cart in the shadow session. To clone the user's shoppingcart as a cloned shopping cart, the browser extension may add, delete,or modify items of another shopping cart in the shadow session so thatthe another shopping cart (e.g., the cloned shopping cart) correspondsto the present content of the user's shopping cart. To test the codes onthe cloned shopping cart in the shadow session, the browser extension(or the automated site navigation program in accordance withinstructions from the browser extension) may perform the code testprocess on the cloned shopping cart in the shadow session.

In another aspect of the disclosure, to determine whether the triggercondition is present based on the monitoring, the browser extension maydetermine whether the currently viewed e-commerce website is one of theplurality e-commerce websites and/or determine whether a currentlyviewed webpage (e.g., a webpage for a product) of the currently viewedwebsite is one of a plurality of webpages. As discussed above, theplurality of e-commerce websites may be approved to execute the codetest process for websites known to almost always have a code availableand have some known success (e.g., the e-commerce websites that have alikelihood of a successful code above a threshold likelihood). Theplurality of webpages may correspond to products that have a likelihoodof having a code that works above a threshold, in a similar manner asdiscussed above for the plurality of e-commerce websites. Then, thebrowser extension may perform the code test process for the first set ofcodes, as discussed above, without determining whether code inputidentifiers are present. Then, upon completion of the code test process,the browser extension may display the result menu. Therefore, in thisaspect of the disclosure, the trigger condition may not necessarily onlybe a presence of code input identifiers, but that the website enablescode input and has a likelihood of success above a threshold. Thus, thebrowser extension may present (e.g., display the result menu) successesto a user as they are browsing and not yet on a cart page (or on anotherwebpage without code input identifiers). Additionally, for one of theplurality e-commerce websites and/or the one or more webpages, beforeexecuting the code test process, the browser extension may wait toexecute the code test process until a specific duration of time haspassed while viewing the website and/or the webpage; if the specificduration of time has not passed, the browser extension may not executethe code test process (therefore, reducing processing time/effort andreducing likelihood of conflicting network messages); if the specificduration of time has passed, the browser extension may execute the codetest process (therefore, only using processing time/effort forwebsites/webpages that a user has shown interest in).

Therefore, the methods and systems of the present disclosure mayeffectively remove an engagement step in the savings conversion funnelfor users of the system of the present disclosure, by automatically(based on a trigger condition being present) testing codes of the firstset of codes, and displaying a menu based on results of the codetesting. The removal of an engagement step in the savings conversionfunnel for users of the system of the present disclosure may cause amarked increase in coupon savings for users of the system of the presentdisclosure. Further, the system of the present disclosure may avoidunduly delaying users while the users browse or check out, by selectingthe first set of codes so that the code test process for the first setof codes is within a threshold period of time. Moreover, the first setof codes may be selected based on a high potential of savings (or othereconomic benefit) being found, so that a user may be informedautomatically that a specific savings is available.

FIG. 2 depicts a flowchart for automatically testing and applying codes,according to one or more embodiments. The flowchart 200 may be performedby the user device 105, discussed above, by executing the automatic codetest process of the browser extension of the application. The browserextension may start the process of the flowchart 200 by determiningwhether a trigger condition is present (block 205). For instance, thebrowser extension may determine whether the trigger condition is presentby monitoring a browsing session of the user and determining whether oneof the CSS elements, HTML elements, or URL elements are present, asdiscussed above with respect to FIG. 1.

In response to determining that the trigger condition is not present(block 205: No), the browser extension may proceed to wait until thetrigger condition is present (block 205). In response to determiningthat the trigger condition is present (block 205: Yes), the browserextension may proceed to perform a code test process for a first set ofcodes (block 210). For instance, the browser extension may perform thecode test process in accordance with FIG. 3, described below.

The browser extension may then proceed to, while the code test processfor the first set of codes executes, display an indicator that the codetest process is executing (block 215). For instance, the browserextension may display a progress menu to inform the user that a codetest process is executing, as discussed above with respect to FIG. 1.

The browser extension may then proceed to, after the code test processfor the first set of codes is completed, display a result menu (block220). For instance, the browser extension may generate the result menubased on the transaction results and the transaction details for thecodes that were applied and display the result menu, as discussed abovewith respect to FIG. 1.

The browser extension may then proceed to determine whether a user inputis received (block 225). In response to determining that the user inputis not received (block 225: No), the browser extension may proceed towait until the user input is received (block 225). In response todetermining that the user input is received (block 225: Yes), thebrowser extension may proceed to determine whether the user inputrequests a continuation action (block 230).

In response to determining that the user input requests the continuationaction (block 230: Yes), the browser extension may proceed to performthe continuation action (block 235). For instance, the browser extensionmay activate a rewards offer for the e-commerce website or apply acorresponding code to a user's shopping cart, as discussed above withrespect to FIG. 1. The browser extension may then proceed to determinewhether the trigger condition is present (block 205).

In response to determining that the user input does not request thecontinuation action (block 230: No), the browser extension may proceedto determine whether the user input requests additional code testing fora second set of codes (block 240). For instance, the browser extensionmay determine whether the user input requests additional code testingfor the second set of codes only if the first result menu includes acontinue testing indicator. The browser extension may determine the userinput requests the additional code testing if the user input engages ona button or link associated with the continue testing indicator, asdiscussed above with respect to FIG. 1.

In response to determining that the user input requests additional codetesting for the second set of codes (block 240: Yes), the browserextension may proceed to perform a code test process for a second set ofcodes (block 245). For instance, the browser extension may perform thecode test process in accordance with FIG. 3, described below.

The browser extension may then proceed to, while the code test processfor the second set of codes executes, display an indicator that the codetest process is executing (block 250). For instance, the browserextension may display a second progress menu, as discussed above withrespect to FIG. 1.

The browser extension may then proceed to, after the code test processfor the second set of codes is completed, display a result menu (block255). For instance, the browser extension may display the second resultmenu, as discussed above with respect to FIG. 1. The browser extensionmay then proceed to determine whether a user input is received (block225).

In response to determining that the user input does not requestadditional code testing for the second set of codes (block 240: No), thebrowser extension may proceed to perform an exit action (block 260). Forinstance, the browser extension may close all menus associated with thebrowser extension, as discussed above with respect to FIG. 1. Thebrowser extension may then proceed to determine whether the triggercondition is present (block 205).

FIG. 3 depicts a flowchart for automatically testing and applying codes,according to one or more embodiments. The flowchart 300 may be performedby the browser extension, discussed above, to perform the code testingprocess on the shopping cart (e.g., block 210 or block 245 of FIG. 2).The browser extension may start the process of the flowchart 300 byobtaining a set of codes to be tested (block 305). The browser extensionmay then proceed to determine whether all codes of the set of codes havebeen tested (block 310).

In response to determining that all codes of the set of codes have beentested (block 310: Yes), the browser extension may proceed to return theresults of the code testing process (block 335).

In response to determining that all codes of the set of codes have notbeen tested (block 310: No), the browser extension may proceed to selectan untested code from among untested codes of the set of codes (block315). For instance, the browser extension may, e.g., select an untestedcode with a highest score, etc., as discussed above with respect to FIG.1.

The browser extension may then proceed to apply the selected code (block320). For instance, the browser extension may programmatically enter atext string corresponding to the code in a code entry field andprogrammatically engage a button/input/form of the code entry field, asdiscussed above with respect to FIG. 1. The browser extension may thenproceed to process a received result from the e-commerce website (block325). For instance, the browser extension may process a response byparsing the response to extract transaction results and transactiondetails, as discussed above with respect to FIG. 1.

The browser extension may then proceed to remove the applied code (block330). For instance, the browser extension may transmit a request todelete the selected code, as discussed above with respect to FIG. 1. Thebrowser extension may then proceed to determine whether all codes of theset of codes have been tested (block 310).

In this manner, each code of the codes of the set of codes may betested. One skilled in the art may recognize that the flowchart 300 maybe performed in parallel for each code of the set of codes or in variousdifferent modes and sequences based on resources and networkconstraints. For instance, the code test process may be performed bydistributed computing by having the server 115 and/or other user devicesperform the code test process on a cloned shopping cart using duplicatedcloned shopping carts and shadow sessions so as test multiple codes at asame time. Alternatively, the user device 105 may generate multipleshadow sessions and cloned shopping carts so as test multiple codes at asame time.

FIGS. 4A-4H depict graphical user interfaces (GUIs) for automaticallytesting and applying codes, according to one or more embodiments. InFIG. 4A, GUI 400A may depict a web page 402 of an e-commerce websitehosted by one of the plurality of e-commerce web servers 120A and 120B,within a browser program that has a browser extension 401, such as thebrowser extension discussed above. The e-commerce web page 402 may beidentified by a uniform resource locator (URL) 404.

The e-commerce web page 402 may display various HTML elements, such asshopping cart text 408, code text 406A and code text entry box and/orbutton 406B, pricing text 410A and pricing data 410B, shipping text 412Aand shipping data 412B, and/or a checkout button 414. The browserextension may determine whether a trigger condition is present based onthe URL 404 and the various HTML elements of the e-commerce web page, asdiscussed above with respect to FIG. 1. In the case depicted in FIG. 4A,the browser extension may determine a trigger condition is present basedon one or a combination of: (1) the URL 404 having “cart” matching a URLelement; (2) the code text 406A having “promo code” in element contentof the code text 406A match an HTML element; and/or (3) a CSS element ofthe e-commerce page (not depicted) matching a CSS element. When thedetermining determines the trigger condition is present, the browserextension may automatically perform a code test process for a first setof codes for an e-commerce website corresponding to the e-commerce webpage 402.

For instance, in FIG. 4B, while the code test process is executing, thebrowser extension may depict a GUI 400B (similar to or the same as GUI400A) and a progress menu 416 overlaid on top of the GUI 400B. Theprogress menu 416 may include an e-commerce website indicator 416A, atest indicator 416B, and/or a test progress bar 416C. The e-commercewebsite indicator 416A may be a graphic or text corresponding to thee-commerce web page 402. The test indicator 416B may be a text stringindicating that a code test process is executing, as discussed abovewith respect to FIG. 1. The test progress bar 416C may depict a progressof the code test process, as discussed above with respect to FIG. 1.

After the first code test process is completed, the browser extensionmay replace the progress menu 416 (or update the progress menu 416) witha result menu of the first code test process. For instance, the browserextension may obtain a compiled first test result; extract thetransaction results and the transaction details for the codes that wereapplied from the first test result; generate the result menu based onthe transaction results and the transaction details for the codes thatwere applied; and display the result menu.

For instance, as depicted in GUI 400C of FIG. 4C, the browser extensionmay display a first result menu 418. The first result menu 418 mayinclude an e-commerce website indicator 418A, a test summary indicator418B, and/or one or more action buttons, such as a continuation actionbutton 418C and/or a test more codes button 418D. The e-commerce websiteindicator 418A may be the same as the e-commerce website indicator 416A.The test summary indicator 418B may be a text string that indicates apotential or already applied savings (or other economic benefit) for avalid code. The continuation action button 418C may be selectable byuser input to apply a code (if not already applied), to proceed to checkout (if a code is already applied), and/or to activate a rewards offer(if not already applied). The test more codes button 418D may beselectable by a user input to test a second set of codes.

Generally, the browser extension may display the result menu with avariety of different information and/or buttons to the user based onresults of the first code test process. For instance, the browserextension may display one of the first result menu 418, a second resultmenu 420, a third result menu 422, a fourth result menu 424, a fifthresult menu 426, and/or a sixth result menu 428. One of skill in the artwould recognize the browser extension would generate the result menubased on the results of the first code test process.

As depicted in FIGS. 4D-4H, the second result menu 420, the third resultmenu 422, the fourth result menu 424, the fifth result menu 426, and thesixth result menu 428 may include an e-commerce website indicators(420A, 422A, 424A, 426A, 428A), a test summary indicators (420B, 422B,424B, 426B, 428B), and/or one or more action buttons(420C/420D,422C/422D, 424C, 426C, 428C). The e-commerce website indicators may bethe same as the e-commerce website indicator 416A. The test summaryindicators may be a text string that indicates a potential or alreadyapplied savings (or other economic benefit) for a valid code (e.g., 420Bfor potential rewards, 422B for potential savings, 426B for potentialrewards and additional codes to test); no potential savings butadditional codes to test (see, e.g., 424B); no potential savings and noadditional codes to test (see, e.g., 428B). The continuation actionbuttons may be selectable by user input to apply a code (if not alreadyapplied), to proceed to check out (if a code is already applied), toactivate a rewards offer (if not already applied), and/or to exit (see,e.g., 428C).

FIGS. 5A-5D depict GUIs for automatically testing and applying codes,according to one or more embodiments. In FIG. 5A, GUI 500A may depict acontinuation menu 502, in response to a user input on a button toperform a continuation action (e.g., activate rewards or proceed tocheckout with savings). The browser extension may replace the resultmenu (e.g., the first result menu 418)(or update the result menu) withthe continuation menu 502. The continuation menu 502 may include ane-commerce website indicator 502A, an activating indicator 502B, anactivated button 502C, and/or a link 502D. The e-commerce websiteindicator 502A may be the same as the e-commerce website indicator 416A.The activating indicator 502B may be a text string that indicates anactivation process (depicted) or code application process is processing.The activated button 502C may previously have been selected by a userinput, and may display in changed state (e.g., change of color) toindicate that it was selected by the user input and/or is no longerselectable. The link 502D may redirect (or display in a menu) to a webpage in association with the reward offer being activated (depicted, asexclusions to the reward offer) or a code being applied.

In FIG. 5B, GUI 500B may depict a second progress menu 504, in responseto a user input to perform a second code test process. The browserextension may replace the result menu (e.g., the first result menu418)(or update the result menu) with the second progress menu 504. Thesecond progress menu 504 may include a test indicator 504A, a testprogress bar 504B, and/or a graphic 504C. The test indicator 504A may bea text string indicating that a code test process is executing, asdiscussed above with respect to FIG. 1. The test progress bar 504B maydepict a progress of the code test process, as discussed above withrespect to FIG. 1. The graphic 504C may depict some or all of the codesbeing tested.

After the second code test process is completed, the browser extensionmay replace the second progress menu 504 (or update the second progressmenu 504) with a second result menu for the second code test process. Asdepicted in FIGS. 5C and 5D, the second result menu may be one of asuccess result menu 506 or a no-savings result menu 508.

The success result menu 506 may include a test summary indicator 506A, anumber of codes tested 506B, a time to test the codes 506C, a potentialsavings or reward offer 506D, and/or one or more action buttons, such asa continuation action button 506E. The test summary indicator 506A maybe a text string summarizing a result (e.g., savings/rewards found). Thenumber of codes tested 506B may be determined by the browser extensionand displayed to the user, to inform the user of the number of codestested during the code test process. The time to test the codes 506C maybe tracked by the browser extension (e.g., from a trigger condition forthe first set of codes or from a user input for the second set of codes,to the result menu being displayed to the user). The potential savingsor reward offer 506D may be a text string indicating a specific savings(e.g., a dollar amount or percentage) or reward offer (either applied orto be applied on behalf of the user). The action buttons may beselectable by a user to proceed to, e.g., checkout.

The no-savings result menu 508 may include a test summary indicator508A, a number of codes tested 508B, a time to test the codes 508C, atested codes graphic 508D, and/or one or more action buttons, such as acontinuation action button 508E. The test summary indicator 508A may bea text string summarizing a result (e.g., no savings/rewards found). Thenumber of codes tested 508B may be determined by the browser extensionand displayed to the user, to inform the user of the number of codestested during the code test process. The time to test the codes 508C maybe tracked by the browser extension (e.g., from a trigger condition forthe first set of codes or from a user input for the second set of codes,to the result menu being displayed to the user). The tested codesgraphic 508D may be graphic or a text string indicating a codes thatwere tested during the second code test process for the second set ofcodes. The action buttons may be selectable by a user to proceed to,e.g., checkout.

FIG. 6 depicts an example system that may execute techniques presentedherein. FIG. 6 is a simplified functional block diagram of a computerthat may be configured to execute techniques described herein, accordingto exemplary embodiments of the present disclosure. Specifically, thecomputer (or “platform” as it may not a be a single physical computerinfrastructure) may include a data communication interface 660 forpacket data communication. The platform may also include a centralprocessing unit (“CPU”) 620, in the form of one or more processors, forexecuting program instructions. The platform may include an internalcommunication bus 610, and the platform may also include a programstorage and/or a data storage for various data files to be processedand/or communicated by the platform such as ROM 630 and RAM 640,although the system 600 may receive programming and data via networkcommunications. The system 600 also may include input and output ports650 to connect with input and output devices such as keyboards, mice,touchscreens, monitors, displays, etc. Of course, the various systemfunctions may be implemented in a distributed fashion on a number ofsimilar platforms, to distribute the processing load. Alternatively, thesystems may be implemented by appropriate programming of one computerhardware platform.

The general discussion of this disclosure provides a brief, generaldescription of a suitable computing environment in which the presentdisclosure may be implemented. In one embodiment, any of the disclosedsystems, methods, and/or graphical user interfaces may be executed by orimplemented by a computing system consistent with or similar to thatdepicted and/or explained in this disclosure. Although not required,aspects of the present disclosure are described in the context ofcomputer-executable instructions, such as routines executed by a dataprocessing device, e.g., a server computer, wireless device, and/orpersonal computer. Those skilled in the relevant art will appreciatethat aspects of the present disclosure can be practiced with othercommunications, data processing, or computer system configurations,including: Internet appliances, hand-held devices (including personaldigital assistants (“PDAs”)), wearable computers, all manner of cellularor mobile phones (including Voice over IP (“VoIP”) phones), dumbterminals, media players, gaming devices, virtual reality devices,multi-processor systems, microprocessor-based or programmable consumerelectronics, set-top boxes, network PCs, mini-computers, mainframecomputers, and the like. Indeed, the terms “computer,” “server,” and thelike, are generally used interchangeably herein, and refer to any of theabove devices and systems, as well as any data processor.

Aspects of the present disclosure may be embodied in a special purposecomputer and/or data processor that is specifically programmed,configured, and/or constructed to perform one or more of thecomputer-executable instructions explained in detail herein. Whileaspects of the present disclosure, such as certain functions, aredescribed as being performed exclusively on a single device, the presentdisclosure may also be practiced in distributed environments wherefunctions or modules are shared among disparate processing devices,which are linked through a communications network, such as a Local AreaNetwork (“LAN”), Wide Area Network (“WAN”), and/or the Internet.Similarly, techniques presented herein as involving multiple devices maybe implemented in a single device. In a distributed computingenvironment, program modules may be located in both local and/or remotememory storage devices.

Aspects of the present disclosure may be stored and/or distributed onnon-transitory computer-readable media, including magnetically oroptically readable computer discs, hard-wired or preprogrammed chips(e.g., EEPROM semiconductor chips), nanotechnology memory, biologicalmemory, or other data storage media. Alternatively, computer implementedinstructions, data structures, screen displays, and other data underaspects of the present disclosure may be distributed over the Internetand/or over other networks (including wireless networks), on apropagated signal on a propagation medium (e.g., an electromagneticwave(s), a sound wave, etc.) over a period of time, and/or they may beprovided on any analog or digital network (packet switched, circuitswitched, or other scheme).

Program aspects of the technology may be thought of as “products” or“articles of manufacture” typically in the form of executable codeand/or associated data that is carried on or embodied in a type ofmachine-readable medium. “Storage” type media include any or all of thetangible memory of the computers, processors or the like, or associatedmodules thereof, such as various semiconductor memories, tape drives,disk drives and the like, which may provide non-transitory storage atany time for the software programming. All or portions of the softwaremay at times be communicated through the Internet or various othertelecommunication networks. Such communications, for example, may enableloading of the software from one computer or processor into another, forexample, from a management server or host computer of the mobilecommunication network into the computer platform of a server and/or froma server to the mobile device. Thus, another type of media that may bearthe software elements includes optical, electrical and electromagneticwaves, such as used across physical interfaces between local devices,through wired and optical landline networks and over various air-links.The physical elements that carry such waves, such as wired or wirelesslinks, optical links, or the like, also may be considered as mediabearing the software. As used herein, unless restricted tonon-transitory, tangible “storage” media, terms such as computer ormachine “readable medium” refer to any medium that participates inproviding instructions to a processor for execution.

Other embodiments of the disclosure will be apparent to those skilled inthe art from consideration of the specification and practice of theinvention disclosed herein. It is intended that the specification andexamples be considered as exemplary only, with a true scope and spiritof the invention being indicated by the following claims.

What is claimed is:
 1. A method for automatic code testing, comprising: monitoring a browsing session of a user on an e-commerce website; determining whether the e-commerce website is one of a plurality of e-commerce websites, the plurality of e-commerce websites including e-commerce websites that have an average time to test a code below a code testing threshold time and e-commerce websites that have an average time to find a code that provides savings below a savings find threshold time; when the determining determines the e-commerce website is one of the plurality of e-commerce websites, determining whether a trigger condition is present based on the monitoring; when the determining determines the trigger condition is present, automatically performing a code test process for a first set of codes to obtain a first test result, the first set of codes being one or more codes among a plurality of codes for the e-commerce website; and upon completion of the code test process for the first set of codes, displaying a first menu, the first menu including information corresponding to the first test result.
 2. The method of claim 1, wherein the determining whether the trigger condition is present based on the monitoring includes: obtaining current web page information of the browsing session; analyzing the current web page information to determine whether code input identifiers are present; and when the analyzing determines the code input identifiers are present, determining the trigger condition is present.
 3. The method of claim 2, wherein the current web page information includes a currently viewed web page of the browsing session, a universal resource locator (URL) of the currently viewed web page, and/or network requests associated with the currently viewed web page, the currently viewed web page being displayed to the user or being about to be displayed to the user, and the code input identifiers include one or more cascading style sheets (CSS) elements, one or more hypertext markup language (HTML) elements, and/or one or more URL elements; and the analyzing the current web page information to determine whether the code input identifiers are present includes: parsing the currently viewed web page to determine whether one of the one or more CSS elements and/or the one or more HTML elements are present; and parsing the URL of the currently viewed web page and/or the network requests to determine whether one of the one or more URL elements are present.
 4. The method of claim 1, wherein the performing the code test process for the first set of codes includes: automatically applying, sequentially or in parallel, codes of the first set of codes to the browsing session of the user; receiving, for each applied code of the applied codes, responses from the e-commerce website; analyzing the responses to determine a result for each of the applied codes; and compiling the first test result based on the determined result for each of the applied codes.
 5. The method of claim 4, wherein the performing the code test process for the first set of codes further includes, before the automatically applying, sequentially or in parallel, the codes of the first set of codes: obtaining the plurality of codes for the e-commerce website; and selecting the one or more codes from the plurality of codes as the first set of codes.
 6. The method of claim 5, wherein the plurality of codes are scored according to a scoring algorithm, and the selecting the one or more codes from the plurality of codes as the first set of codes includes: selecting a number of codes scored highest of the scored plurality of codes as the one or more codes.
 7. The method of claim 6, wherein the number of codes is set to a fixed number or is set to a variable based on average processing time to test codes on the e-commerce website.
 8. The method of claim 1, wherein the first menu includes: when the first test result indicates one or more successful codes of the first set of codes, a success indicator, the success indicator displaying a summary of savings or reward points for the one or more successful codes; when the first test result indicates no successful codes of the first set of codes, a no-savings indicator; and when the first set of codes does not include all of the plurality of codes, a continue testing indicator to test a second set of codes, the second set of codes corresponding to a remainder of the plurality of codes not included in the first set of codes.
 9. The method of claim 8, further comprising: when a continue testing indicator to test a second set of codes is displayed in the first menu, receiving a user input to test the second set of codes; in response to receiving the user input to test the second set of codes, performing the code test process for the second set of codes to obtain a second test result; and upon completion of the code test process for the second set of codes, displaying a second menu, the second menu including information corresponding to the second test result.
 10. The method of claim 1, further comprising, before the determining whether the trigger condition is present: when the determining determines the e-commerce website is not one of the plurality of e-commerce websites, only performing the code test process when the trigger condition is present and a user input to proceed is received.
 11. A system for automatic code testing, the system comprising: a memory storing instructions; and a processor executing the instructions to perform a process including: monitoring a browsing session of a user on an e-commerce website; determining whether the e-commerce website is one of a plurality of e-commerce websites, the plurality of e-commerce websites including e-commerce websites that have an average time to test a code below a code testing threshold time; when the determining determines the e-commerce website is one of the plurality of e-commerce websites, determining whether a trigger condition is present based on the monitoring; when the determining determines the trigger condition is present, automatically performing a code test process for a first set of codes to obtain a first test result, the first set of codes being one or more codes among a plurality of codes for the e-commerce website; and upon completion of the code test process for the first set of codes, displaying a first menu, the first menu including information corresponding to the first test result.
 12. The system of claim 11, wherein the process further includes, to determine whether the trigger condition is present based on the monitoring: obtaining current web page information of the browsing session; analyzing the current web page information to determine whether code input identifiers are present; and when the analyzing determines the code input identifiers are present, determining the trigger condition is present.
 13. The system of claim 12, wherein the current web page information includes a currently viewed web page of the browsing session, a universal resource locator (URL) of the currently viewed web page, and/or network requests associated with the currently viewed web page, the currently viewed web page being displayed to the user or being about to be displayed to the user, and the code input identifiers include one or more cascading style sheets (CSS) elements, one or more hypertext markup language (HTML) elements, and/or one or more URL elements; and wherein the process further includes, to analyze the current web page information to determine whether the code input identifiers are present: parsing the currently viewed web page to determine whether one of the one or more CSS elements and/or the one or more HTML elements are present; and parsing the URL of the currently viewed web page and/or the network requests to determine whether one of the one or more URL elements are present.
 14. The system of claim 11, wherein the process further includes, to perform the code test process for the first set of codes: automatically applying, sequentially or in parallel, codes of the first set of codes to the browsing session of the user; receiving, for each applied code of the applied codes, responses from the e-commerce website; analyzing the responses to determine a result for each of the applied codes; and compiling the first test result based on the determined result for each of the applied codes.
 15. The system of claim 14, wherein the process further includes, before the automatically applying, sequentially or in parallel, the codes of the first set of codes: obtaining the plurality of codes for the e-commerce website; and selecting the one or more codes from the plurality of codes as the first set of codes.
 16. The system of claim 15, wherein the plurality of codes are scored according to a scoring algorithm, and wherein the process further includes, to select the one or more codes from the plurality of codes as the first set of codes: selecting a number of codes scored highest of the scored plurality of codes as the one or more codes.
 17. The system of claim 16, wherein the number of codes is set to a fixed number or is set to a variable based on average processing time to test codes on the e-commerce website.
 18. The system of claim 11, wherein the first menu includes: when the first test result indicates one or more successful codes of the first set of codes, a success indicator, the success indicator displaying a summary of savings or reward points for the one or more successful codes; when the first test result indicates no successful codes of the first set of codes, a no-savings indicator; and when the first set of codes does not include all of the plurality of codes, a continue testing indicator to test a second set of codes, the second set of codes corresponding to a remainder of the plurality of codes not included in the first set of codes.
 19. The system of claim 18, wherein the process further includes: when a continue testing indicator to test a second set of codes is displayed in the first menu, receiving a user input to test the second set of codes; in response to receiving the user input to test the second set of codes, performing the code test process for the second set of codes to obtain a second test result; and after the code test process for the second set of codes ends, displaying a second menu, the second menu including information corresponding to the second test result.
 20. A method for automatic code testing, the method comprising: monitoring a browsing session of a user on an e-commerce website; determining whether the e-commerce website is one of a plurality of e-commerce websites, the plurality of e-commerce websites including e-commerce websites that have an average time to find a code that provides savings below a savings find threshold time; when the determining determines the e-commerce website is one of the plurality of e-commerce websites, determining whether a trigger condition is present based on the monitoring; when the determining determines the trigger condition is present, automatically performing a code test process for a first set of codes to obtain a first test result, the first set of codes being one or more codes among a plurality of codes for the e-commerce website; upon completion of the code test process for the first set of codes, displaying a first menu, the first menu including information corresponding to the first test result, the first menu including a continue testing indicator when the first set of codes does not include all of the plurality of codes, the continue testing indicator being selectable by a user input to test a second set of codes, the second set of codes corresponding to a remainder of the plurality of codes not included in the first set of codes; in response to receiving the user input to test the second set of codes, performing the code test process for the second set of codes to obtain a second test result; and upon completion of the code test process for the second set of codes, displaying a second menu, the second menu including information corresponding to the second test result. 